package studydome;

import java.util.Random;
import java.util.Scanner;

public class 双色球 {
    //投注号码由6个红色球号码和1个蓝色球号码组成。
    //红色球号码从1-33中选择;蓝色球号码从1-16中选择。
    public static void main(String[] args){
        //获取中奖密码
        int[] get = get();
        //遍历中奖号码
        for (int i = 0; i < get.length; i++) {
            System.out.print(get[i] + " ");
        }
        //进行换行处理
        System.out.println();
        //获取用户购买的数
        int[] userInput = userInput();
        System.out.println("您购买的彩票数为：");
        for (int i = 0; i < userInput.length; i++) {
            System.out.print(userInput[i] + " ");
        }
        System.out.println();
        //遍历中奖号码
        System.out.println("开奖的彩票数为：");
        for (int i = 0; i < get.length; i++) {
            System.out.print(get[i] + " ");
        }

        //判断用户的中奖情况
        //定义计数器，来记录蓝色球和红色球的中奖情况
        int redCount = 0;
        int buleCount = 0;
        //判断红球的中奖情况
        for (int i = 0; i < userInput.length-1; i++) {
            int redNuber = userInput[i];
            for (int j = 0; j < get.length-1; j++) {
                if (get[j] == redNuber) {
                    redCount++;
                    break;
                }
            }
        }
        //判断蓝色球的中奖情况
        int buleNumber = userInput[ userInput.length - 1];
        if ( buleNumber  == get[get.length-1]) {
            buleCount++;
        }
        //打印红球中奖的个数和蓝色球的中奖个数
        //进行换行处理
        System.out.println();
        System.out.print(redCount + " ");
        System.out.println(buleCount);
        //判断
        if (redCount==6 && buleCount == 1) {
            System.out.println("恭喜您，中奖1000万！！");
        } else if (redCount==6 && buleCount == 0) {
            System.out.println("恭喜您，中奖500万！！");
        } else if ((redCount==5 && buleCount == 0) || (redCount==5 && buleCount == 1)) {
            System.out.println("恭喜您，中奖3000元！！");
        } else if ((redCount==4 && buleCount == 0) || (redCount==4 && buleCount == 1)) {
            System.out.println("恭喜您，中奖200元！！");
        } else if ((redCount==3 && buleCount == 1) || (redCount==2 && buleCount == 1)) {
            System.out.println("恭喜您，中奖10元！！");
        } else if ((redCount==1 && buleCount == 1) || (redCount==0 && buleCount == 1)) {
            System.out.println("恭喜您，中奖5元！！");
        }else {
            System.out.println("很抱歉，您没中奖。！");
        }
        //用switch不知道为什么没用
//        switch (redCount) {
//            case 6:
//                switch (buleCount) {
//                    case 0 -> System.out.println("恭喜您，中奖500万！！");
//                    case 1 -> System.out.println("恭喜您，中奖1000万！！");
//                }
//                break;
//            case 5:
//                switch (buleCount) {
//                    case 0 -> System.out.println("恭喜您，中奖200元！！");
//                    case 1 -> System.out.println("恭喜您，中奖3000元！！");
//                }
//                break;
//            case 4:
//                switch (buleCount) {
//                    case 0 -> System.out.println("恭喜您，中奖10元！！");
//                    case 1 -> System.out.println("恭喜您，中奖200元！！");
//                }
//                break;
//            case 3:
//                switch (buleCount) {
//                    case 1 -> System.out.println("恭喜您，中奖10元！！");
//                }
//                break;
//            case 2:
//            case 1:
//            case 0:
//                switch (buleCount) {
//                    case 1 -> System.out.println("恭喜您，中奖5元！！");
//                }
//                break;
//            default:
//                System.out.println("很抱歉，您没中奖");
//                break;
//        }
    }

    //定义一个方法来随机获取中奖球的号数
    //获取红球，六个不重复的号码，且在1-33内
    public static int[] get(){
        //装中奖号码的盒子
        int[] get = new int[7];

        Random r = new Random();
        for (int i = 0; i < 6; ) {
            int random = r.nextInt(33) + 1;
            boolean falg = contins(get, random);
            if (!falg) {
                get[i] = random;
                //把i++放在这里是为了如果不满足这个条件就不会自加，从而不影响添加的个数
                i++;
            }
        }
        //再把一个蓝球放进数组里面，蓝球的范围为1-16
        int bule = r.nextInt(16) + 1;
        get[get.length-1] = bule;

//        for (int i = 0; i < get.length; i++) {
//            System.out.print(get[i] + " ");
//        }
        return get;
    }


    //获取用户购买的数
    public static int[] userInput(){
        int[] arr = new int[7];
        Scanner sc =new Scanner(System.in);
        //让用户输入红球的号数

        for (int i = 0; i < 6;) {
            System.out.println("请输入您购买的第"+ ( i + 1 ) + "个红色球的号数：");
            int redNumber = sc.nextInt();
            boolean flag = contins(arr,redNumber);
            if ( !flag && 1 <=redNumber && redNumber<=33 ) {
                arr[i] = redNumber;
                i++;
            }else {
                System.out.println("您输入的号码数不合法，请您重新输入！！");
            }
        }
        //让用户输入红球的号数
        while (true) {
            System.out.println("请输入您购买的蓝色球的号数：");
            int buleNumber = sc.nextInt();
            if ( buleNumber >= 1 && buleNumber <= 16) {
                arr[arr.length-1] = buleNumber;
                break;
            }else {
                System.out.println("您输入的号码数不合法，请您重新输入！！");
            }
        }
        return arr;
    }


    //判断arr数组中存不存在nuubmer这个数，存在就返回true，不存在就是false
    public static boolean contins(int[] arr , int number){
        for (int i = 0; i < arr.length; i++) {
            if ( arr[i] == number ) {
//                System.out.println("重复了！！");
                return true;
            }
        }
        return false;
    }



}
